/* 
GeoGebra - Dynamic Mathematics for Everyone
http://www.geogebra.org

This file is part of GeoGebra.

This program is free software; you can redistribute it and/or modify it 
under the terms of the GNU General Public License as published by 
the Free Software Foundation.

 */

/*
 * Gridable.java
 *
 * Created on 18.08.2011, 17:20
 */

package org.geogebra.desktop.gui.view;

import java.awt.Component;

import org.geogebra.desktop.main.AppD;

/**
 * This interface is needed by PrintGridable to print an Object on more than one
 * page and divide it's content on those pages such that the "cuts" are only
 * along the given grid.
 *
 */
public interface Gridable {

	/**
	 * @return the widths of all the columns in the grid (in order from left to
	 *         right)
	 */
	public int[] getGridColwidths();

	/**
	 * @return the heights of all the rows in the grid (in order from top to
	 *         bottom)
	 */
	public int[] getGridRowHeights();

	/**
	 * @return application
	 */
	public AppD getApplication();

	/**
	 * 
	 * @return the components on which the print method is used, they will be
	 *         put together according to the placement in the 2D-array
	 */
	public Component[][] getPrintComponents();

}
